package com.dys.testconsumer07;

import java.util.function.Consumer;

/**
 * @className: com.dys.testconsumer07.ConsumerTest2
 * @description: Consumer接口是用来消费数据的, 使用的时候需要指定一个泛型来定义参数类型
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/31 下午10:03
 */
public class ConsumerTest2 {

    // 如果一个方法的参数和返回值全部是Consumer类型，那么就可以实现效果，消费一个数据的时候，
    // 首先做一个操作，然后再做一个操作，实现组合，而这个方法就是Consumer接口中的default方法 andThen方法
    public static void testConsumer(Consumer<String> c1, Consumer<String> c2) {
        String str = "Hello World";
        // c1.accept(str);
        // c2.accept(str);
        // 写法2：先执行c1,再执行c2
        // c1.andThen(c2).accept(str);
        // 写法2：先执行c2,再执行c1
        c2.andThen(c1).accept(str);
    }

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        testConsumer(msg1 -> {
            System.out.println("转小写: --->" + msg1.toLowerCase());
        }, msg2 -> {
            System.out.println("转大写：--->" + msg2.toUpperCase());
        });
    }
}
